package com.test.springcloudapp.web.controller;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
//@RefreshScope
public class HelloController {

    private final Logger logger = LoggerFactory.getLogger(getClass());

//    @Value("${minPoolSize}")
    private String jdbcUrl;


    @Autowired
    private DiscoveryClient discoveryClient;

    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String hello() {
        ServiceInstance instance = discoveryClient.getLocalServiceInstance();
        logger.info("/hello, host:" + instance.getHost() + "， service id:" + instance.getServiceId());
        return "Hello World";
    }

    @RequestMapping(value = "/hi1", method = RequestMethod.GET)
    @HystrixCommand(threadPoolProperties = {@HystrixProperty(name = "coreSize", value = "30")})
    public String hi(String name) {
        logger.info("hi is called");
        return "hello " + name + "!";
    }

    @RequestMapping(value = "/config", method = RequestMethod.GET)
    public String config() {
        return jdbcUrl;
    }

}